# @Time : 2020/7/22 14:27
# @Author : Fioman 
# @Phone : 13149920693
import cv2 as cv
import numpy as np
from 第二周_opencv轻松入门.第06章_图像平滑处理.image_show_tools import image_show

"""
opencv 还提供了方框滤波方式,与均值滤波的不同在于,方框滤波不会计算像素平均值.在均值滤波中,滤波结果的像素值是任意一个点的邻域平均值.
等于各邻域像素值之和除以邻域面积.而在方框滤波中,可以自由的选择是否对均值滤波的结果做归一化处理,即可以自由选择滤波结果是邻域像素值
之和的平均值,还是邻域像素之和.
函数语法:
cv.boxFilter(src,ddepth,ksize,anchor,normallize,borderType)
式中:
1> dst是返回值,表示进行方框滤波后得到的处理结果.
2> ddepth是处理结果图像的图像深度,一般使用-1表示与原始图像使用相同的图像深度
3> ksize是滤波核的大小.滤波核的值可以为(3,3),表示以3*3大小的邻域均值作为滤波处理的结果.
4> anchor是锚点,其默认值是(-1,-1),表示当前计算均值的点位于核的中心位置.该值使用默认值即可.
5> normalize表示在滤波时是否进行归一化(这里指将计算结果规范化为当前像素范围内的值)处理,该参数是一个逻辑值,可能为真(值为1)或假(值为0)
6> normalize的默认值是1,表示进行归一化处理.
"""

img = cv.imread("test.bmp", cv.IMREAD_GRAYSCALE)
# 默认进行归一化处理,和blur的效果等同.
boxFilterDefault = cv.boxFilter(img, -1, (5, 5), normalize=1)
# 不进行归一化处理,像素是周围像素之和
boxFilterSum = cv.boxFilter(img, -1, (5, 5), normalize=0)

image_show("boxFilterDefault",boxFilterDefault)
image_show("boxFilterSum",boxFilterSum)

